// 三步创建web服务器

const http = require('http')
const fs = require('fs')
const path = require('path')
const qs = require('querystring')
// 接口的三要素
// 1. 类型 get,post
// 2. url 
// 3. 参数

const server = http.createServer((req, res) => {
  // 1. 当你的请求是get类型，并且地址是/getList时，解析查询字符串
  // const { url, method } = req
  // req.url             ===> /getList?name=abc
  // req.url.split('?')  ===> ['/getList', 'name=abc']
  
  // 数组解构赋值
  var [url, queryStr] = req.url.split('?')
  
  // 2. 读出db/data.json中内容，做查询，找到满足条件的结果之后再返回
  if(url === '/getList' && req.method === 'GET'){
    // 把查询字符串转成对象
    const qsObj = qs.parse(queryStr)
    // console.log(qsObj)
    // const  { name } = qsObj
    // 取出了查询字符串中参数name的值 
    //

    // 读出内容，转数组
    const pathFile = path.join(__dirname, 'db', 'data.json')
    const content = fs.readFileSync(pathFile, 'utf8')
    const arr = JSON.parse(content)
    // 在数组中查找出符合条件的内容
    const rs = arr.find(function(item){
      // item.name 是当前循环元素的中的name
      // qsObj.name  是要查找的name值
      if(item.name === qsObj.name) {
        return true
      } else {
        return false
      }
    })
    //   // 响应头中的content-type
    //   res.setHeader('content-type','application/json;charset=utf8')
    // 由于res.end返回的内容必须是字符串，或者是buffer
    const result = JSON.stringify(rs)
    console.log('找到的结果是',result)
    res.end(result)
  } else {
    res.end('404')
  }

})

server.listen(8083, () => {
  console.log('你的服务器已经在8083就绪了')
})